package com.xhtt.modules.task.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.time.Duration;
import java.time.LocalDateTime;

/**
 * <p>
 * 排车计划
 * </p>
 *
 * @author feipc
 * @since 2019-02-26
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class TaskCarPlan extends Model<TaskCarPlan> {

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    private String serialNo;

    private Integer activityNo;//tas系统的唯一订单号

    private String potNo;

    /**
     * 车号
     */
    private String carNo;

    /**
     * 台号
     */
    private Integer stageId;

    @TableField(exist = false)
    private String stageName;//台号 名称


    private Integer productId;
    /**
     * 产品
     */
    private String productName;

    /**
     * 数量
     */
    private String number;

    /**
     * 门卫登记时间
     */
    private LocalDateTime dateRegister;

    /**
     * 开票时间
     */
    private LocalDateTime dateInvoice;

    /**
     * 过磅时间
     */
    private LocalDateTime dateWeigh;

    /**
     * 备注
     */
    private String memo;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;

    /**
     * 最后一次调整时间
     */
    @TableField(update = "now()")
    private LocalDateTime updateTime;

    /**
     * 创建者ID，人工系统创建为0
     */
    private Integer createUserId;

    /**
     * 最后一次调整者ID
     */
    private Integer updateUserId;

    /**
     * 状态
     */
    @TableField(exist = false)
    private String status;


    @TableField(exist = false)
    private Integer userId;// 操作人id
    @TableField(exist = false)
    private String userName;// 操作人名字
    @TableField(exist = false)
    private String teamName;// 操作人所在组名字
    @TableField(exist = false)
    private LocalDateTime finishDate;//完成时间

//    @TableField(exist = false)
//    private LocalDateTime stageUpDate;//上台时间，判断是否开始装车

    @TableField(exist = false)
    private LocalDateTime startDate;//开始操作时间，判断是否开始装车

    @TableField(exist = false)
    private long waitTime;//等待时间 分钟

    @TableField(exist = false)
    private Integer taskCarTaskId;//任务id


    @Override
    protected Serializable pkVal() {
        return this.id;
    }

    public long getWaitTime() {
        if (null != startDate) {
            return -1;//已经开始装车
        } else {
            if (null == dateWeigh) {
                return 0;//还没过磅
            }
            Duration d = Duration.between(dateWeigh, LocalDateTime.now());
            return d.toMinutes();
        }
    }

    public String getStatus() {

        if (finishDate != null) {
            return "已结束";
        } else {
            if (userId != null) {
                return "装车中";
            } else {
                return "待装车";
            }
        }
    }
}
